package com.zhuiyi.yiqingbackend.exception;

import com.zhuiyi.yiqingbackend.common.ErrorCode;

/**
 * 第四步：不合我们的要求，抛出我们自定义异常，自动根据枚举的ErrorCode 获取值
 * 自定义 全局异常类
 *
 * @author zhuiyi
 * <p>
 * description：针对全局（controller，service都可以用），返回-1 null 等都可以 用该异常类
 * <p>
 * 这个异常类 继承（extends） RuntimeException 再在上面做扩展的
 */
public class BusinessException extends RuntimeException {//我们不需要set这些code，description 改成final

    private final int code;

    private final String desciption;

    public BusinessException(String message, int code, String desciption) {//因为我们要用到 RuntimeException 所以我们用父级的构造
        super(message);
        this.code = code;
        this.desciption = desciption;
    }

    public BusinessException(ErrorCode errorCode) {//因为我们要用到 RuntimeException 所以我们用父级的构造
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
        this.desciption = errorCode.getDescription();
    }

    public BusinessException(ErrorCode errorCode, String desciption) {//因为我们要用到 RuntimeException 所以我们用父级的构造
        super(errorCode.getMessage());
        this.code = errorCode.getCode();
        this.desciption = desciption;
    }

    public int getCode() {
        return code;
    }

    public String getDesciption() {
        return desciption;
    }
}
